-- project : kproj 3-4
-- project groep: 1
-- gemaakt door:  Freek Pronk
--
-- omschrijving : Dit deel van het programma zorgt er voor dat de paritie wordt gecontroleerd
-- dit wordt gedaan met de pakketen start,adres,leeg en 10 data pakketten.
-- er wordt een even paritiy bit verwacht.
-- er wordt gekeken naar regels(dus van boven naar beneden per bit).
-- dit moet dan kloppen met de data paket waarde parity in staat. 
--
----------------------------------------------------------------------------------
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use ieee.numeric_std.all;
use work.parity.all;
use work.UART_RAM.all;

entity parity_koppel is
port(
		clock 		: in std_logic;
		enable 		: in std_logic;
		write_en 	: in std_logic;
		reset			: in std_logic;
--		Write_DATA 	: in std_logic_vector(7 downto 0); -- is nodig voor testen
--		Write_ADDR	: in std_logic_vector(3 downto 0); -- is nodig voor testen
--		Read_ADDR 	: in std_logic_vector(3 downto 0);
--		Read_DATA 	: in std_logic_vector(7 downto 0);
--		parity 		: out std_logic_vector(7 downto 0);-- voor het testen
		parity_oke	: out std_logic 
		);
end parity_koppel;

architecture Behavioral of parity_koppel is
 
signal data_paketjes_hulp	: std_logic_vector(7 downto 0):= "00000000";
signal parity_hulp 			: std_logic_vector(7 downto 0) := "00000000";
signal klopt_hulp 			: std_logic := '0';
signal hulp_teller 			: std_logic_vector(3 downto 0):= "0000";
signal write_en_hulp			: std_logic ;
begin 
	
	ic1_ram: RAM_16x8 Port map ( 	
			Clk => clock,
			Write_En	 	=> write_en_hulp, -- in dien geen test "write_en_hulp"  van maken
			Write_ADDR 	=> (others => '0'), 
			Read_ADDR 	=> hulp_teller,
			Read_ADDR_2 => (others => '0'),
			Write_DATA 	=> (others => '0'),
			Read_DATA 	=> data_paketjes_hulp, 
			Read_DATA_2 => open); 
--			
	ic2_parity: parity_controle port map(
			klok				=> clock,	 	
			enable 			=> enable,		
			reset				=>	reset,
			Write_En_out 	=> write_en_hulp,
			datapaket		=> data_paketjes_hulp,
			vorig_parity	=> parity_hulp,
			parity 	  		=> parity_hulp,
			teller_out 		=> hulp_teller ,
			parity_oke 		=> parity_oke );
		
--parity <= parity_hulp; -- voor het testen

end Behavioral;

library ieee;
use ieee.std_logic_1164.all;

package parity_totaal is

component parity_koppel is
port(
		clock 		: in std_logic;
		enable 		: in std_logic;
		write_en 	: in std_logic;
		reset			: in std_logic;
--		Write_DATA 	: in std_logic_vector(7 downto 0); -- is nodig voor testen
--		Write_ADDR	: in std_logic_vector(3 downto 0); -- is nodig voor testen
--		Read_ADDR 	: in std_logic_vector(3 downto 0);
--		Read_DATA 	: in std_logic_vector(7 downto 0);
--		parity 		: out std_logic_vector(7 downto 0);-- voor het testen
		parity_oke	: out std_logic 
		);
end component;

end package;